//#include <iostream>
//#include <vector>
//#include <algorithm>
//using namespace std;
//
//int main()
//{
//	int n;
//	cin >> n;
//
//	vector<int> vi;
//	for (int i = 0; i < n; ++i)
//	{
//		int tmp;
//		cin >> tmp;
//
//		vi.push_back(tmp);
//	}
//
//	auto it = min_element(vi.begin(), vi.end());
//	auto start = vi.begin();
//
//	// check first half
//	int prev = -1;
//	while (start != it)
//	{
//		if (*start < prev)
//			break;
//
//		prev = *start;
//		++start;
//	}
//
//	if (start != it)
//	{
//		cout << -1 << endl;
//		return 0;
//	}
//
//	// check second half
//	prev = *it;
//	start = it;
//	while (start != vi.end())
//	{
//		if (*start < prev)
//			break;
//
//		prev = *start;
//		++start;
//	}
//
//	// check splitted lowest range
//	int shifts = 0;
//	if (start != vi.end() && it == vi.begin())
//	{
//		while (*start == *it)
//		{
//			++shifts;
//			++start;
//			if (start == vi.end())
//				break;
//		}
//	}
//
//	if (start != vi.end() || (it != vi.begin() && vi.back() > vi.front()))
//	{
//		cout << -1 << endl;
//		return 0;
//	}
//
//	if (shifts)
//		cout << shifts << endl;
//	else if (it != vi.begin())
//		cout << vi.end() - it << endl;
//	else
//		cout << 0 << endl;
//
//	return 0;
//}